//
//  Tool.h
//  weiQuanKe
//
//  Created by qtkj on 16/8/5.
//  Copyright © 2016年 马天驰. All rights reserved.
//

#import <Foundation/Foundation.h>
#import <CoreLocation/CoreLocation.h>
#import <objc/runtime.h>
typedef void(^XHNetworkCacheCompletionBlock)(BOOL result);

@interface Tool : NSObject

+ (instancetype)sharedInstance;
//去除h5中的标签
- (NSString *)delHTMLBiqoQianWithHtml:(NSString *)html;

//字典转json字符串
- (NSString *)dicZhuanHuanJson:(NSDictionary *)dic;

- (NSString *)arrayToJSONString:(NSArray *)array;

//json转数组或字典
- (id)jsonToObject:(NSString *)json;

//通过对象返回一个NSDictionary，键是属性名称，值是属性值。
- (NSDictionary*)getObjectData:(id)obj;

//MARK:--判断字符串后有几位小数，超过八位就省略
-(NSString *)judgeStringForDecimalPlaces:(NSString *)string;

/**
 计算文本高度

 @param value 文本内容
 @param width 限制宽度
 @param size 字号大小
 @return 计算完毕后高度
 */
- (CGFloat) heightForString:(NSString *)value andWidth:(CGFloat)width fontSize:(CGFloat)size;


/**
 根据传入的字符串数组 返回一个排好序的标签视图

 @param dataAr 内容数组
 @param backgroundColor 标签背景颜色
 @param titleColor 标签字体颜色
 @param height 标签高度
 @param font 标签Font
 @param margin_x 每个标签距左距离
 @param margin_y 每个标签距上距离
 @param maxWidth 视图最大宽度
 @return 返回视图
 */
- (UIView *)setSignView:(NSArray *)dataAr andBackgroundColor:(UIColor *)backgroundColor andTitleColor:(UIColor *)titleColor Height:(CGFloat)height andFont:(UIFont *)font andMargin_x:(CGFloat)margin_x andMargin_y:(CGFloat)margin_y andMaxWidth:(CGFloat)maxWidth;

/**
 *  写入/更新缓存(同步) [按APP版本号缓存,不同版本APP,同一接口缓存数据互不干扰]
 *
 *  @param jsonResponse 要写入的数据(JSON)
 *  @param URL    数据请求URL
 *
 *  @return 是否写入成功
 */
+(BOOL)saveJsonResponseToCacheFile:(id)jsonResponse andURL:(NSString *)URL;

/**
 *  写入/更新缓存(异步) [按APP版本号缓存,不同版本APP,同一接口缓存数据互不干扰]
 *
 *  @param jsonResponse    要写入的数据(JSON)
 *  @param URL             数据请求URL
 *  @param completedBlock  异步完成回调(主线程回调)
 */
+(void)save_asyncJsonResponseToCacheFile:(id)jsonResponse andURL:(NSString *)URL completed:(XHNetworkCacheCompletionBlock)completedBlock;

/**
 *  获取缓存的对象(同步)
 *
 *  @param URL 数据请求URL
 *
 *  @return 缓存对象
 */
+(id )cacheJsonWithURL:(NSString *)URL;

/**
 *  获取缓存路径
 *
 *  @return 缓存路径
 */
+(NSString *)cachePath;


/**
 *  清除缓存
 */
+(BOOL)clearCache;

/**
 *  获取缓存大小(单位:M)
 *
 *  @return 缓存大小
 */
+ (float)cacheSize;

/**
 *  获取缓存大小,(以..kb/..M)形式获取
 *  小于1M,以kb形式返回,大于1M,以M形式返回
 *  @return 缓存大小+单位
 */
+(NSString *)cacheSizeFormat;

/**
 判断是不是手机号

 @param mobileNumbel 手机号码
 @return 返回结果
 */
- (BOOL)isMobile:(NSString *)mobileNumbel;

/**
 时间转换时间戳

 @param timeString 时间
 @param format 格式
 @return 返回时间戳
 */
- (NSString *)timeWithTimeIntervalString:(NSString *)timeString WithDateFormat:(NSString *)format;
//获取当前时间
- (NSDictionary *)getCurrentTime;
//获取当前时间戳
- (NSString *)getNowTimeTimestamp;
//距离现在的时间
-(NSString *)getUTCFormateDate:(NSString *)newDate;
//计算label里面有几行
- (NSArray *)getLinesArrayOfStringWithString:(NSString *)string
                                        Font:(UIFont *)font1
                                        Rect:(CGRect)rect1;
//获取私有属性
- (void)getAvalibleClass:(Class)class1;
//整形判断
- (BOOL)isPureInt:(NSString *)string;

//浮点型判断
- (BOOL)isPureFloat:(NSString *)string;

//对模型对象归档保存
- (void)saveObject:(id)object WithPath:(NSString *)path;
//对象模型解档
- (id)getObjectWithPath:(NSString *)path;
//删除归档
- (void)removeObjectWithpath:(NSString *)path;
//判断一个二进制图片是什么类型
- (NSString *)typeForImageData:(NSData *)data;
//地图坐标系转换
/**
 *  @brief  世界标准地理坐标(WGS-84) 转换成 中国国测局地理坐标（GCJ-02）<火星坐标>
 *
 *  ####只在中国大陆的范围的坐标有效，以外直接返回世界标准坐标
 *
 *  @param  location    世界标准地理坐标(WGS-84)
 *
 *  @return 中国国测局地理坐标（GCJ-02）<火星坐标>
 */
+ (CLLocationCoordinate2D)wgs84ToGcj02:(CLLocationCoordinate2D)location;


/**
 *  @brief  中国国测局地理坐标（GCJ-02） 转换成 世界标准地理坐标（WGS-84）
 *
 *  ####此接口有1－2米左右的误差，需要精确定位情景慎用
 *
 *  @param  location    中国国测局地理坐标（GCJ-02）
 *
 *  @return 世界标准地理坐标（WGS-84）
 */
+ (CLLocationCoordinate2D)gcj02ToWgs84:(CLLocationCoordinate2D)location;


/**
 *  @brief  世界标准地理坐标(WGS-84) 转换成 百度地理坐标（BD-09)
 *
 *  @param  location    世界标准地理坐标(WGS-84)
 *
 *  @return 百度地理坐标（BD-09)
 */
+ (CLLocationCoordinate2D)wgs84ToBd09:(CLLocationCoordinate2D)location;


/**
 *  @brief  中国国测局地理坐标（GCJ-02）<火星坐标> 转换成 百度地理坐标（BD-09)
 *
 *  @param  location    中国国测局地理坐标（GCJ-02）<火星坐标>
 *
 *  @return 百度地理坐标（BD-09)
 */
+ (CLLocationCoordinate2D)gcj02ToBd09:(CLLocationCoordinate2D)location;


/**
 *  @brief  百度地理坐标（BD-09) 转换成 中国国测局地理坐标（GCJ-02）<火星坐标>
 *
 *  @param  location    百度地理坐标（BD-09)
 *
 *  @return 中国国测局地理坐标（GCJ-02）<火星坐标>
 */
+ (CLLocationCoordinate2D)bd09ToGcj02:(CLLocationCoordinate2D)location;


/**
 *  @brief  百度地理坐标（BD-09) 转换成 世界标准地理坐标（WGS-84）
 *
 *  ####此接口有1－2米左右的误差，需要精确定位情景慎用
 *
 *  @param  location    百度地理坐标（BD-09)
 *
 *  @return 世界标准地理坐标（WGS-84）
 */
+ (CLLocationCoordinate2D)bd09ToWgs84:(CLLocationCoordinate2D)location;
@end
